SES API へのリクエスト時の署名バージョンを確認する方法
2020/08/18 AWS Tools for Windows PowerShell でのデバッグ情報リンクを追加
2020/08/18 署名バージョン4 への移行情報のリンクを追加
困っていた内容
SES API 利用時の署名バージョンが 2020年10月以降は バージョン4 のみがサポートされると記載がありますが、現在利用している署名バージョンを確認する方法はありますか?(2020/07/03 時点)
Important
Beginning October 1st, 2020, Amazon SES will only support requests signed using Signature Version 4.
If you use an older version of the AWS Signature, you must adopt AWS Signature Version 4 prior to that date.↓↓↓ 機械翻訳 ↓↓↓
重要
2020年10月1日より、Amazon SESはSignature Version 4を使用して署名されたリクエストのみをサポートするようになります。
古いバージョンのAWS署名を使用している場合は、それ以前にAWS署名バージョン4を採用する必要があります。
どうすればいいの?
利用状況の確認
残念ながら CloudTrail では SES の全 API が記録されているわけではありません。
そのため、リクエストヘッダーを確認することで、利用している署名バージョンを確認することが可能です。
以下のドキュメントの例では AWS3 の 3 の部分がバージョンとなります。
X-Amzn-Authorization: AWS3-HTTPS AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,Algorithm=HMACSHA256,Signature=lBP67vCvGl ...
引用元: Authenticating requests to the Amazon SES API
また AWS SDK や AWS CLI ではそれぞれが提供しているロギングやデバッグ機能を利用して確認することが可能です。
例: AWS CLI
$ aws ses send-email --from *****@classmethod.jp --to [email protected] --subject "test" --text "Hello,Goodbye" --region us-east-1 --debug 2020-07-03 16:47:40,878 - MainThread - awscli.clidriver - DEBUG - CLI version: aws-cli/2.0.8 Python/3.7.4 Darwin/19.5.0 botocore/2.0.0dev12 (中略) 2020-07-03 16:47:41,063 - MainThread - botocore.auth - DEBUG - StringToSign: AWS4-HMAC-SHA256 20200703T074741Z 20200703/us-east-1/ses/aws4_request (以下、略)
例: AWS Tools for Windows PowerShell
Response Logging in AWS Tools for Windows PowerShell
署名バージョン4 への移行
今回であれば利用しているバージョンが 3以下の場合は 署名バージョン4 を利用するように修正します。
- AWS SDK および AWS CLI を利用: 最新バージョンへアップデート
- 直接 API へリクエスト: 処理内で利用している署名バージョンを変更